package day10.yichang.demo;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Exceptiondemo1 {
    public static void main(String[] args) /*throws Exception 也可以继续把内部异常往外抛，你不要管我*/{
        //show();

         //直接处理使用try,catch
        try{//监视代码，异常放在try里面，如果出现异常，就直接跳到catch里面去，然后执行catch里面的代码
            show2();//接到异常，可以选择直接抛出，也可以直接处理***
        }catch (Exception e)//如果出现异常形参是异常类型+变量
        {
           /// System.out.println("asd");
            e.printStackTrace();//打印异常信息
        }
        /*catch(异常类型2 变量)
        {

        }
        */

    }

    //编译时异常

    public static void show2()throws Exception/*throws ParseException具体的异常类型*///抛出异常给调用的地方Exception是最大的异常父类
    {//show2这个方法里面有异常
        System.out.println("程序开始");
             String str="2024-10-06  17 16:06:09";
             //把字符串时间解析成java中的一个日期对象
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       Date date=sdf.parse(str);//这里会冒红，提醒程序员这个方法的返回值可能是异常类型需要处理，所以要自己去处理，也就是抛出（也可以现场处理不跑出）也就是异常往上走//把str字符串解析成sdf日期对象，parse 通常指的是“解析”的意思。具体来说，它是将一个字符串转换成特定的数据结构或对象的过程
       //下面的代码没有做
        System.out.println(date);
//       //整一个Scanner读取double数字
//        Scanner sc=new Scanner(System.in);
//
//        double num=sc.nextDouble();      有些定义的方法可能自带返回运行异常所以直接try去监视

        System.out.println("程序结束，但是这条语句不会触发程序直接崩了");
    }



    //当场处理

//    public static void show2()/*throws ParseException具体的异常类型*///抛出异常给调用的地方Exception是最大的异常父类
//    {
//        System.out.println("程序开始");
//        String str="2024-10-06 16 09:06:09";
//        //把字符串时间解析成java中的一个日期对象
//        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        try{Date date=sdf.parse(str); System.out.println(date);}
//        catch(Exception e){}
//        //这里会冒红，提醒程序员这个方法的返回值可能是异常类型需要处理，所以要自己去处理，也就是抛出（也可以现场处理不跑出）也就是异常往上走//把str字符串解析成sdf日期对象，parse 通常指的是“解析”的意思。具体来说，它是将一个字符串转换成特定的数据结构或对象的过程
//        //下面的代码没有做
//
//
//
//        System.out.println("程序结束，但是这条语句不会触发程序直接崩了");
//    }



    //运行时异常
    public static void show()
    {//特点，编译时候不报错，运行的时候出现的异常，继承自RuntimeException
        int arr[]={1,2,3};
        //System.out.println(arr[3]);//1.  ArrayIndexOutOfBoundsException


      //  System.out.println(10 / 0);//2.  ArithmeticException

        //空指针异常
         String str=null;
        System.out.println(str.length());//3. NullPointerException

        System.out.println("程序结束，但是这条语句不会触发程序直接崩了");

    }

}
